Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / android / app / src / main / java / com / meshchatx / rnode / UsbSerialHub.java

Displaying Raw • Download


android/app/src/main/java/com/meshchatx/rnode/UsbSerialHub.java 2fe900061e4d5da639a129894494e020b4b686d9 (2fe90006) Text, 10.47 KB

Tff7b72package T7ee787com.meshchatx.rnodeTb4b4b4;

Tff7b72import T7ee787android.app.PendingIntentTb4b4b4;
Tff7b72import T7ee787android.content.BroadcastReceiverTb4b4b4;
Tff7b72import T7ee787android.content.ContextTb4b4b4;
Tff7b72import T7ee787android.content.IntentTb4b4b4;
Tff7b72import T7ee787android.content.IntentFilterTb4b4b4;
Tff7b72import T7ee787android.hardware.usb.UsbDeviceTb4b4b4;
Tff7b72import T7ee787android.hardware.usb.UsbDeviceConnectionTb4b4b4;
Tff7b72import T7ee787android.hardware.usb.UsbManagerTb4b4b4;
Tff7b72import T7ee787android.os.BuildTb4b4b4;
Tff7b72import T7ee787android.util.LogTb4b4b4;

Tff7b72import T7ee787androidx.annotation.NullableTb4b4b4;
Tff7b72import T7ee787androidx.core.content.ContextCompatTb4b4b4;

Tff7b72import T7ee787com.hoho.android.usbserial.driver.UsbSerialDriverTb4b4b4;
Tff7b72import T7ee787com.hoho.android.usbserial.driver.UsbSerialPortTb4b4b4;
Tff7b72import T7ee787com.hoho.android.usbserial.driver.UsbSerialProberTb4b4b4;

Tff7b72import T7ee787java.io.IOExceptionTb4b4b4;
Tff7b72import T7ee787java.util.ArrayListTb4b4b4;
Tff7b72import T7ee787java.util.ListTb4b4b4;
Tff7b72import T7ee787java.util.concurrent.CopyOnWriteArrayListTb4b4b4;

T8b949e/**
* Native USB serial hub for the RNode flasher Activity (no WebView).
*/
Tff7b72public Tff7b72final Tff7b72class T56d364UsbSerialHub Tb4b4b4{
Tff7b72private Tff7b72static Tff7b72final Te6edf3String Te6edf3TAG Tff7b72= Ta5d6ff"Ta5d6ffUsbSerialHubTa5d6ff"Tb4b4b4;
Tff7b72public Tff7b72static Tff7b72final Te6edf3String Te6edf3ACTION_USB_PERMISSION Tff7b72= Ta5d6ff"Ta5d6ffcom.meshchatx.USB_PERMISSIONTa5d6ff"Tb4b4b4;

Tff7b72public Tff7b72interface T56d364Listener Tb4b4b4{
Tffa657void Td2a8ffonUsbPermissionResultTb4b4b4(Te6edf3String Te6edf3deviceIdTb4b4b4, Tffa657boolean Te6edf3grantedTb4b4b4)Tb4b4b4;

Tffa657void Td2a8ffonPortsChangedTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72public Tff7b72static Tff7b72final Tff7b72class T56d364PortInfo Tb4b4b4{
Tff7b72public Tff7b72final Te6edf3String Te6edf3deviceIdTb4b4b4;
Tff7b72public Tff7b72final Te6edf3String Te6edf3deviceNameTb4b4b4;
Tff7b72public Tff7b72final Tffa657int Te6edf3vendorIdTb4b4b4;
Tff7b72public Tff7b72final Tffa657int Te6edf3productIdTb4b4b4;
Tff7b72public Tff7b72final Tffa657boolean Te6edf3hasPermissionTb4b4b4;
Tff7b72public Tff7b72final Te6edf3String Te6edf3driverNameTb4b4b4;

Te6edf3PortInfoTb4b4b4(
Te6edf3String Te6edf3deviceIdTb4b4b4,
Te6edf3String Te6edf3deviceNameTb4b4b4,
Tffa657int Te6edf3vendorIdTb4b4b4,
Tffa657int Te6edf3productIdTb4b4b4,
Tffa657boolean Te6edf3hasPermissionTb4b4b4,
Te6edf3String Te6edf3driverName
Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3deviceId Tff7b72= Te6edf3deviceIdTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3deviceName Tff7b72= Te6edf3deviceNameTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3vendorId Tff7b72= Te6edf3vendorIdTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3productId Tff7b72= Te6edf3productIdTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasPermission Tff7b72= Te6edf3hasPermissionTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3driverName Tff7b72= Te6edf3driverNameTb4b4b4;
Tb4b4b4}

Tf0883e@Override
Tff7b72public Te6edf3String Td2a8fftoStringTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3deviceName
Tff7b72+ Ta5d6ff"Ta5d6ff (0xTa5d6ff"
Tff7b72+ Te6edf3IntegerTb4b4b4.Te6edf3toHexStringTb4b4b4(Te6edf3vendorIdTb4b4b4)
Tff7b72+ Ta5d6ff"Ta5d6ff:0xTa5d6ff"
Tff7b72+ Te6edf3IntegerTb4b4b4.Te6edf3toHexStringTb4b4b4(Te6edf3productIdTb4b4b4)
Tff7b72+ Ta5d6ff"Ta5d6ff)Ta5d6ff"Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72private Tff7b72final Te6edf3Context Te6edf3appContextTb4b4b4;
Tff7b72private Tff7b72final Te6edf3ListTff7b72<Te6edf3ListenerTff7b72> Te6edf3listeners Tff7b72= Tff7b72new Te6edf3CopyOnWriteArrayListTff7b72<Tff7b72>Tb4b4b4(Tb4b4b4)Tb4b4b4;
Tf0883e@Nullable
Tff7b72private Te6edf3BroadcastReceiver Te6edf3permissionReceiverTb4b4b4;
Tff7b72private Tffa657boolean Te6edf3receiverRegistered Tff7b72= Tff7b72falseTb4b4b4;

Tf0883e@Nullable
Tff7b72private Te6edf3UsbSerialPort Te6edf3openPortTb4b4b4;
Tf0883e@Nullable
Tff7b72private Te6edf3UsbDeviceConnection Te6edf3openConnectionTb4b4b4;
Tf0883e@Nullable
Tff7b72private Te6edf3String Te6edf3openDeviceIdTb4b4b4;

Tff7b72public Td2a8ffUsbSerialHubTb4b4b4(Te6edf3Context Te6edf3contextTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3appContext Tff7b72= Te6edf3contextTb4b4b4.Te6edf3getApplicationContextTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72public Tffa657void Td2a8ffaddListenerTb4b4b4(Te6edf3Listener Te6edf3listenerTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3listener Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3listenersTb4b4b4.Te6edf3addTb4b4b4(Te6edf3listenerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72public Tffa657void Td2a8ffremoveListenerTb4b4b4(Te6edf3Listener Te6edf3listenerTb4b4b4) Tb4b4b4{
Te6edf3listenersTb4b4b4.Te6edf3removeTb4b4b4(Te6edf3listenerTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72public Tffa657void Td2a8ffstartTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3ensurePermissionReceiverTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72public Tffa657void Td2a8ffstopTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3receiverRegistered Tff7b72&Tff7b72& Te6edf3permissionReceiver Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Te6edf3appContextTb4b4b4.Te6edf3unregisterReceiverTb4b4b4(Te6edf3permissionReceiverTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3Exception Te6edf3ignoredTb4b4b4) Tb4b4b4{
Tb4b4b4}
Te6edf3receiverRegistered Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Te6edf3listenersTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72public Te6edf3ListTff7b72<Te6edf3PortInfoTff7b72> Td2a8fflistPortsTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3ListTff7b72<Te6edf3PortInfoTff7b72> Te6edf3out Tff7b72= Tff7b72new Te6edf3ArrayListTff7b72<Tff7b72>Tb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3UsbManager Te6edf3manager Tff7b72= Te6edf3usbManagerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3manager Tff7b72=Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4}
Te6edf3ListTff7b72<Te6edf3UsbSerialDriverTff7b72> Te6edf3drivers Tff7b72=
Te6edf3UsbSerialProberTb4b4b4.Te6edf3getDefaultProberTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3findAllDriversTb4b4b4(Te6edf3managerTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Te6edf3UsbSerialDriver Te6edf3driver Tb4b4b4: Te6edf3driversTb4b4b4) Tb4b4b4{
Te6edf3UsbDevice Te6edf3device Tff7b72= Te6edf3driverTb4b4b4.Te6edf3getDeviceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3device Tff7b72=Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Te6edf3outTb4b4b4.Te6edf3addTb4b4b4(
Tff7b72new Te6edf3PortInfoTb4b4b4(
Te6edf3deviceIdForTb4b4b4(Te6edf3deviceTb4b4b4)Tb4b4b4,
Te6edf3deviceTb4b4b4.Te6edf3getDeviceNameTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3deviceTb4b4b4.Te6edf3getVendorIdTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3deviceTb4b4b4.Te6edf3getProductIdTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3managerTb4b4b4.Te6edf3hasPermissionTb4b4b4(Te6edf3deviceTb4b4b4)Tb4b4b4,
Te6edf3driverTb4b4b4.Te6edf3getClassTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getSimpleNameTb4b4b4(Tb4b4b4)
Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4}

Tff7b72public Tffa657boolean Td2a8ffrequestPermissionTb4b4b4(Te6edf3String Te6edf3deviceIdTb4b4b4) Tb4b4b4{
Te6edf3UsbManager Te6edf3manager Tff7b72= Te6edf3usbManagerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3manager Tff7b72=Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Te6edf3ensurePermissionReceiverTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3UsbSerialDriver Te6edf3driver Tff7b72= Te6edf3findDriverTb4b4b4(Te6edf3managerTb4b4b4, Te6edf3deviceIdTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3driver Tff7b72=Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Te6edf3UsbDevice Te6edf3device Tff7b72= Te6edf3driverTb4b4b4.Te6edf3getDeviceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3managerTb4b4b4.Te6edf3hasPermissionTb4b4b4(Te6edf3deviceTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Te6edf3Intent Te6edf3intent Tff7b72= Tff7b72new Te6edf3IntentTb4b4b4(Te6edf3ACTION_USB_PERMISSIONTb4b4b4)Tb4b4b4;
Te6edf3intentTb4b4b4.Te6edf3setPackageTb4b4b4(Te6edf3appContextTb4b4b4.Te6edf3getPackageNameTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657int Te6edf3flags Tff7b72= Te6edf3PendingIntentTb4b4b4.Te6edf3FLAG_UPDATE_CURRENTTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3BuildTb4b4b4.Te6edf3VERSIONTb4b4b4.Te6edf3SDK_INT Tff7b72>Tff7b72= Te6edf3BuildTb4b4b4.Te6edf3VERSION_CODESTb4b4b4.Te6edf3MTb4b4b4) Tb4b4b4{
Te6edf3flags Tff7b72|Tff7b72= Te6edf3PendingIntentTb4b4b4.Te6edf3FLAG_IMMUTABLETb4b4b4;
Tb4b4b4}
Te6edf3PendingIntent Te6edf3pi Tff7b72=
Te6edf3PendingIntentTb4b4b4.Te6edf3getBroadcastTb4b4b4(Te6edf3appContextTb4b4b4, Te6edf3deviceTb4b4b4.Te6edf3getDeviceIdTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3intentTb4b4b4, Te6edf3flagsTb4b4b4)Tb4b4b4;
Te6edf3managerTb4b4b4.Te6edf3requestPermissionTb4b4b4(Te6edf3deviceTb4b4b4, Te6edf3piTb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}

Tff7b72public Tffa657boolean Td2a8ffrequestPermissionsForAllTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657boolean Te6edf3any Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72for Tb4b4b4(Te6edf3PortInfo Te6edf3port Tb4b4b4: Te6edf3listPortsTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3portTb4b4b4.Te6edf3hasPermissionTb4b4b4) Tb4b4b4{
Te6edf3any Tff7b72|Tff7b72= Te6edf3requestPermissionTb4b4b4(Te6edf3portTb4b4b4.Te6edf3deviceIdTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3anyTb4b4b4;
Tb4b4b4}

Tff7b72public Tff7b72synchronized Tffa657boolean Td2a8ffopenTb4b4b4(Te6edf3String Te6edf3deviceIdTb4b4b4, Tffa657int Te6edf3baudRateTb4b4b4) Tff7b72throws Te6edf3IOException Tb4b4b4{
Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3UsbManager Te6edf3manager Tff7b72= Te6edf3usbManagerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3manager Tff7b72=Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Te6edf3IOExceptionTb4b4b4(Ta5d6ff"Ta5d6ffUSB service unavailableTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3UsbSerialDriver Te6edf3driver Tff7b72= Te6edf3findDriverTb4b4b4(Te6edf3managerTb4b4b4, Te6edf3deviceIdTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3driver Tff7b72=Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Te6edf3IOExceptionTb4b4b4(Ta5d6ff"Ta5d6ffNo serial driver for Ta5d6ff" Tff7b72+ Te6edf3deviceIdTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3UsbDevice Te6edf3device Tff7b72= Te6edf3driverTb4b4b4.Te6edf3getDeviceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3managerTb4b4b4.Te6edf3hasPermissionTb4b4b4(Te6edf3deviceTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3requestPermissionTb4b4b4(Te6edf3deviceIdTb4b4b4)Tb4b4b4;
Tff7b72throw Tff7b72new Te6edf3IOExceptionTb4b4b4(Ta5d6ff"Ta5d6ffUSB permission requiredTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3UsbDeviceConnection Te6edf3connection Tff7b72= Te6edf3managerTb4b4b4.Te6edf3openDeviceTb4b4b4(Te6edf3deviceTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3connection Tff7b72=Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Te6edf3IOExceptionTb4b4b4(Ta5d6ff"Ta5d6ffopenDevice failedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3ListTff7b72<Te6edf3UsbSerialPortTff7b72> Te6edf3ports Tff7b72= Te6edf3driverTb4b4b4.Te6edf3getPortsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3ports Tff7b72=Tff7b72= Tff7b72null Tff7b72|Tff7b72| Te6edf3portsTb4b4b4.Te6edf3isEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3connectionTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72throw Tff7b72new Te6edf3IOExceptionTb4b4b4(Ta5d6ff"Ta5d6ffNo serial ports on deviceTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3UsbSerialPort Te6edf3port Tff7b72= Te6edf3portsTb4b4b4.Te6edf3getTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3portTb4b4b4.Te6edf3openTb4b4b4(Te6edf3connectionTb4b4b4)Tb4b4b4;
Tffa657int Te6edf3baud Tff7b72= Te6edf3baudRate Tff7b72> T79c0ff0 Tff7b72? Te6edf3baudRate Tb4b4b4: T79c0ff115200Tb4b4b4;
Te6edf3portTb4b4b4.Te6edf3setParametersTb4b4b4(Te6edf3baudTb4b4b4, T79c0ff8Tb4b4b4, Te6edf3UsbSerialPortTb4b4b4.Te6edf3STOPBITS_1Tb4b4b4, Te6edf3UsbSerialPortTb4b4b4.Te6edf3PARITY_NONETb4b4b4)Tb4b4b4;
Te6edf3portTb4b4b4.Te6edf3setDTRTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3portTb4b4b4.Te6edf3setRTSTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3openPort Tff7b72= Te6edf3portTb4b4b4;
Te6edf3openConnection Tff7b72= Te6edf3connectionTb4b4b4;
Te6edf3openDeviceId Tff7b72= Te6edf3deviceIdTb4b4b4;
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}

Tff7b72public Tff7b72synchronized Tffa657void Td2a8ffcloseTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3openPort Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Te6edf3openPortTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3Exception Te6edf3ignoredTb4b4b4) Tb4b4b4{
Tb4b4b4}
Te6edf3openPort Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3openConnection Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Te6edf3openConnectionTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3Exception Te6edf3ignoredTb4b4b4) Tb4b4b4{
Tb4b4b4}
Te6edf3openConnection Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Te6edf3openDeviceId Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}

Tff7b72public Tff7b72synchronized Tffa657boolean Td2a8ffisOpenTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3openPort Tff7b72!Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}

Tf0883e@Nullable
Tff7b72public Tff7b72synchronized Te6edf3String Td2a8ffgetOpenDeviceIdTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3openDeviceIdTb4b4b4;
Tb4b4b4}

Tff7b72public Tff7b72synchronized Tffa657void Td2a8ffsetBaudRateTb4b4b4(Tffa657int Te6edf3baudRateTb4b4b4) Tff7b72throws Te6edf3IOException Tb4b4b4{
Te6edf3requireOpenTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3openPortTb4b4b4.Te6edf3setParametersTb4b4b4(Te6edf3baudRateTb4b4b4, T79c0ff8Tb4b4b4, Te6edf3UsbSerialPortTb4b4b4.Te6edf3STOPBITS_1Tb4b4b4, Te6edf3UsbSerialPortTb4b4b4.Te6edf3PARITY_NONETb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72public Tff7b72synchronized Tffa657void Td2a8ffsetDtrRtsTb4b4b4(Tffa657boolean Te6edf3dtrTb4b4b4, Tffa657boolean Te6edf3rtsTb4b4b4) Tff7b72throws Te6edf3IOException Tb4b4b4{
Te6edf3requireOpenTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3openPortTb4b4b4.Te6edf3setDTRTb4b4b4(Te6edf3dtrTb4b4b4)Tb4b4b4;
Te6edf3openPortTb4b4b4.Te6edf3setRTSTb4b4b4(Te6edf3rtsTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72public Tff7b72synchronized Tffa657void Td2a8ffwriteTb4b4b4(Tffa657byteTff7b72[Tff7b72] Te6edf3dataTb4b4b4) Tff7b72throws Te6edf3IOException Tb4b4b4{
Te6edf3requireOpenTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3openPortTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3dataTb4b4b4, T79c0ff2000Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72public Tff7b72synchronized Tffa657int Td2a8ffreadTb4b4b4(Tffa657byteTff7b72[Tff7b72] Te6edf3bufferTb4b4b4, Tffa657int Te6edf3timeoutMsTb4b4b4) Tff7b72throws Te6edf3IOException Tb4b4b4{
Te6edf3requireOpenTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3openPortTb4b4b4.Te6edf3readTb4b4b4(Te6edf3bufferTb4b4b4, Te6edf3timeoutMsTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72private Tffa657void Td2a8ffrequireOpenTb4b4b4(Tb4b4b4) Tff7b72throws Te6edf3IOException Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3openPort Tff7b72=Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Te6edf3IOExceptionTb4b4b4(Ta5d6ff"Ta5d6ffSerial port not openTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72private Tffa657void Td2a8ffensurePermissionReceiverTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3receiverRegisteredTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3permissionReceiver Tff7b72=
Tff7b72new Te6edf3BroadcastReceiverTb4b4b4(Tb4b4b4) Tb4b4b4{
Tf0883e@Override
Tff7b72public Tffa657void Td2a8ffonReceiveTb4b4b4(Te6edf3Context Te6edf3contextTb4b4b4, Te6edf3Intent Te6edf3intentTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3intent Tff7b72=Tff7b72= Tff7b72null Tff7b72|Tff7b72| Tff7b72!Te6edf3ACTION_USB_PERMISSIONTb4b4b4.Te6edf3equalsTb4b4b4(Te6edf3intentTb4b4b4.Te6edf3getActionTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3UsbDevice Te6edf3device Tff7b72= Te6edf3intentTb4b4b4.Te6edf3getParcelableExtraTb4b4b4(Te6edf3UsbManagerTb4b4b4.Te6edf3EXTRA_DEVICETb4b4b4)Tb4b4b4;
Tffa657boolean Te6edf3granted Tff7b72=
Te6edf3intentTb4b4b4.Te6edf3getBooleanExtraTb4b4b4(Te6edf3UsbManagerTb4b4b4.Te6edf3EXTRA_PERMISSION_GRANTEDTb4b4b4, Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3String Te6edf3deviceId Tff7b72= Te6edf3device Tff7b72!Tff7b72= Tff7b72null Tff7b72? Te6edf3deviceIdForTb4b4b4(Te6edf3deviceTb4b4b4) Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4;
Tff7b72for Tb4b4b4(Te6edf3Listener Te6edf3listener Tb4b4b4: Te6edf3listenersTb4b4b4) Tb4b4b4{
Te6edf3listenerTb4b4b4.Te6edf3onUsbPermissionResultTb4b4b4(Te6edf3deviceIdTb4b4b4, Te6edf3grantedTb4b4b4)Tb4b4b4;
Te6edf3listenerTb4b4b4.Te6edf3onPortsChangedTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4;
Te6edf3IntentFilter Te6edf3filter Tff7b72= Tff7b72new Te6edf3IntentFilterTb4b4b4(Te6edf3ACTION_USB_PERMISSIONTb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
T8b949e// App-private USB permission result. Not exported to other apps.
Te6edf3ContextCompatTb4b4b4.Te6edf3registerReceiverTb4b4b4(
Te6edf3appContextTb4b4b4,
Te6edf3permissionReceiverTb4b4b4,
Te6edf3filterTb4b4b4,
Te6edf3ContextCompatTb4b4b4.Te6edf3RECEIVER_NOT_EXPORTED
Tb4b4b4)Tb4b4b4;
Te6edf3receiverRegistered Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3Exception Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3LogTb4b4b4.Te6edf3wTb4b4b4(Te6edf3TAGTb4b4b4, Ta5d6ff"Ta5d6ffregisterReceiver failed: Ta5d6ff" Tff7b72+ Te6edf3eTb4b4b4.Te6edf3getMessageTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tf0883e@Nullable
Tff7b72private Te6edf3UsbSerialDriver Td2a8fffindDriverTb4b4b4(Te6edf3UsbManager Te6edf3managerTb4b4b4, Te6edf3String Te6edf3deviceIdTb4b4b4) Tb4b4b4{
Te6edf3ListTff7b72<Te6edf3UsbSerialDriverTff7b72> Te6edf3drivers Tff7b72=
Te6edf3UsbSerialProberTb4b4b4.Te6edf3getDefaultProberTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3findAllDriversTb4b4b4(Te6edf3managerTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Te6edf3UsbSerialDriver Te6edf3driver Tb4b4b4: Te6edf3driversTb4b4b4) Tb4b4b4{
Te6edf3UsbDevice Te6edf3device Tff7b72= Te6edf3driverTb4b4b4.Te6edf3getDeviceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3device Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Te6edf3deviceIdForTb4b4b4(Te6edf3deviceTb4b4b4)Tb4b4b4.Te6edf3equalsTb4b4b4(Te6edf3deviceIdTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3driverTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}

Tff7b72private Tff7b72static Te6edf3String Td2a8ffdeviceIdForTb4b4b4(Te6edf3UsbDevice Te6edf3deviceTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3StringTb4b4b4.Te6edf3valueOfTb4b4b4(Te6edf3deviceTb4b4b4.Te6edf3getDeviceIdTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tf0883e@Nullable
Tff7b72private Te6edf3UsbManager Td2a8ffusbManagerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4(Te6edf3UsbManagerTb4b4b4) Te6edf3appContextTb4b4b4.Te6edf3getSystemServiceTb4b4b4(Te6edf3ContextTb4b4b4.Te6edf3USB_SERVICETb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────